[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 18.022 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/*********************************************************************************************
Programa: apaga.c
Autor: Enzo Ferber 'Slackware_10'
Propósito: Apaga linha definida por usuário em um arquivo
**********************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int abreArquivo(char arquivo[]){
    FILE *arqEntrada;
    FILE *arqSaida;
    int line = 0;
    int linha = 1;
    int i;
    char textoArquivo[100];
    char *output;
    output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char));
    strcat(output, arquivo);
    strcat(output, ".editado");
    if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto
        printf("Impossivel abrir arquivo...\n"); //informa o erro
        exit(1); //finaliza execução
    }
    if((arqSaida = fopen(output, "w")) == 0){ //testa se o arquivo pode ser aberto
        printf("Impossivel abrir arquivo...\n"); //informa o erro
        exit(1); //finaliza execução
    }
    printf("Digite a linha a ser apagada no arquivo: "); //pede a linha
    scanf("%d", &line); //le a linha e armazena na variável 'line'
    rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo
    for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo
       memset(textoArquivo, '{FONTE}', 100); //inicializa e/ou limpa string 'textoArquivo'
        fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres
        if(linha == line){ //se a linha for a escolhida
           fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha
            linha = linha + 1; //incrementa o contador de linhas
            continue; //volta ao inicio do loop sem executar o resto
        }
        linha = linha + 1; //incrementa o contador de linas
        fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt
    }
    printf("O arquivo output %c: %s\n",233, output);
    free(output); //desaloca espaço alocado para string contendo novo do novo arquivo
    fclose(arqEntrada); //fecha a stream 'arqEntrada'
    fclose(arqSaida); //fecha a stream 'arqSaida'
}
int main(void){ //rotina principal do programa
    char arquivo[100];
    printf("Digite o caminho completo do arquivo: ");
    __fpurge(stdin); //limpa buffer de entrada
    scanf("%[^\n]", arquivo);
    abreArquivo(arquivo); 
}
        
     
Arquivo com números aleatórios.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? (12)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)









